package cn.timeapi.sdk;

import cn.timeapi.sdk.data.Request;
import cn.timeapi.sdk.data.Response;

import java.lang.annotation.Documented;

/**
 * @description:   API程序入口接口，提交到timeapi平台的api程序需要实现本接口，
 *                 作为平台调用入口，否则平台无法接入你这边的程序
 *                 注意事项：继承本类作为api程序入口类,并且通过{@Api} 注解,在类定义上声明,
 *                 以便平台查找，如果为配置平台无法定位,{@Api} 如果不作为入口可以设置 {@Api(value=false)}
 * @author: Vincent Vic
 * @email: vincent-vic@qq.com
 * @time: 2020/7/27 20:08
 */
public interface Appliction {
    /**
     *  API程序入口接口，提交到timeapi平台的api程序需要实现本接口，
     *  作为平台调用入口，否则平台无法接入你这边的程序
     *  注意事项：继承本类作为api程序入口类,并且通过{@Api} 注解,在类定义上声明,
     *  以便平台查找
     */

    /**
     * api程序入口,每个api程序需要实现本接口
     * @param request 平台传入参数
     * @return Response 需要设置状态码code，消息msg(如成功，失败，其他状态信息)，
     *         数组设置在Data中(SDK1.0版本适配List,Map,自定义类) .
     *         注：自定义类最后平台会将其转为Map形式
     * @throws Exception 建议在可能出现异常的地方捕获异常,通过Response向平台回送错误信息,便于后续查找修复问题
     */
    public Response apiApplication(Request request) throws Exception;
}
